package com.abc.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 搜索相关配置
 */
@Data
@Component
@ConfigurationProperties(prefix = "search")
public class SearchConfig {

    /**
     * RRF 算法配置
     */
    private RRFConfig rrf = new RRFConfig();

    /**
     * 重排序配置
     */
    private RerankConfig rerank = new RerankConfig();

    @Data
    public static class RRFConfig {
        /**
         * RRF 常数 k，用于平滑排名，默认为 60
         */
        private int k;

        /**
         * 是否启用 RRF 增强排序
         */
        private boolean enabled;

        /**
         * 是否启用基于文档长度的排序策略
         */
        private boolean enableLengthRanking;

        /**
         * 是否启用基于关键词匹配的排序策略
         */
        private boolean enableKeywordRanking;
    }

    @Data
    public static class RerankConfig {
        /**
         * 默认重排序模型
         */
        private String defaultModel;

        /**
         * 最大返回结果数量
         */
        private int maxResults;

        /**
         * 是否返回文档内容
         */
        private boolean returnDocuments;
    }
}
